iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0

1. 取得 OpenAI API Key

首先,前往 OpenAI 網站 (https://platform.openai.com/) 註冊帳號並取得 API Key。這個 Key 將用於我們與 OpenAI 服務之間的通訊。

2. 撰寫 API 呼叫程式碼

在專案中新增一個腳本,例如 OpenAICommunicator.cs,並參考以下程式碼範例:

using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

public class OpenAICommunicator : MonoBehaviour
{
    public string apiKey = "YOUR_API_KEY"; // 替換成你的 OpenAI API Key

    public IEnumerator SendRequest(string prompt, System.Action<string> callback)
    {
        string url = "https://api.openai.com/v1/completions";

        // 設定 API 請求內容
        string requestBody = JsonUtility.ToJson(new
        {
            model = "text-davinci-003", // 選擇適合的 OpenAI 模型
            prompt = prompt,
            max_tokens = 50,
            temperature = 0.7f // 調整回應的隨機性
        });

        // 建立 UnityWebRequest
        using (UnityWebRequest request = UnityWebRequest.Post(url, requestBody))
        {
            request.SetRequestHeader("Authorization", "Bearer " + apiKey);
            request.SetRequestHeader("Content-Type", "application/json");

            // 發送請求並等待回應
            yield return request.SendWebRequest();

            if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
            {
                Debug.LogError("Error: " + request.error);
                callback(null);
            }
            else
            {
                // 解析回應
                string jsonResponse = request.downloadHandler.text;
                string responseText = JsonUtility.FromJson<OpenAIResponse>(jsonResponse).choices[0].text.Trim();
                callback(responseText);
            }
        }
    }

    [System.Serializable]
    public class OpenAIResponse
    {
        public Choice[] choices;
    }

    [System.Serializable]
    public class Choice
    {
        public string text;
    }
}

3. 整合到遊戲中

在遊戲中,當玩家輸入指令時,我們可以使用 OpenAICommunicator 來獲取角色的回應。以下是一個簡單的示範:

public class GameController : MonoBehaviour
{
    public OpenAICommunicator aiCommunicator;

    public void OnPlayerInput(string playerInput)
    {
        StartCoroutine(aiCommunicator.SendRequest(playerInput, OnResponseReceived));
    }

    private void OnResponseReceived(string response)
    {
        if (!string.IsNullOrEmpty(response))
        {
            Debug.Log("AI Response: " + response);
            // 在遊戲中顯示 AI 回應
        }
    }
}

4. 測試與調整

現在,你可以在遊戲中測試角色的對話功能。根據玩家的輸入,角色將會給出相應的回應。你可以調整 temperaturemax_tokens 參數,以獲得不同風格的回應。


上一篇
Day 7 - 設計AI行為
下一篇
Day 9 - 故事設定
系列文
Prompt Box - 從零開始開發一款AI互動遊戲9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言